﻿//////////////////////////////////////////////////////////////////////////////////
//
// Project            : SilverlightAsyncSave
// Module             : SilverlightAsyncSave
// Description        : SilverlightAsyncSaveSample Main page.
// 
// Repository         : $URL$
// Last changed by    : $LastChangedBy$
// Revision           : $LastChangedRevision$
// Last Changed       : $LastChangedDate$
// Author             : $Author$
//
// Id                 : $Id$
//
// Copyright          : (c) 2010 Torsten Bär
//
// Published under the MIT License. See license.txt or http://www.opensource.org/licenses/mit-license.php.
//
//////////////////////////////////////////////////////////////////////////////////
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;

namespace SilverlightAsyncSave
{
   /// <summary>
   /// Main page.
   /// </summary>
   public partial class MainPage : UserControl
   {
      /// <summary>
      /// Initializes a new instance of the <see cref="MainPage"/> class.
      /// </summary>
      public MainPage()
      {
         InitializeComponent();
      }

      // After the Frame navigates, ensure the HyperlinkButton representing the current page is selected
      private void ContentFrame_Navigated(object sender, NavigationEventArgs e)
      {
         foreach (UIElement child in LinksStackPanel.Children)
         {
            HyperlinkButton hb = child as HyperlinkButton;
            if (hb != null && hb.NavigateUri != null)
            {
               if (hb.NavigateUri.ToString().Equals(e.Uri.ToString()))
               {
                  VisualStateManager.GoToState(hb, "ActiveLink", true);
               }
               else
               {
                  VisualStateManager.GoToState(hb, "InactiveLink", true);
               }
            }
         }
      }

      // If an error occurs during navigation, show an error window
      private void ContentFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
      {
         e.Handled = true;
         ChildWindow errorWin = new ErrorWindow(e.Uri);
         errorWin.Show();
      }
   }
}